//
// Created by chao on 2021/10/16.
//
#include "iostream"
#include "SequenList.h"

void SequenList::Initiate() {
    len = 0;
}

int SequenList::Insert(DataType x, int i) {
    //在线性表的第i个数据元素之前插入一个新的数据元素x
    int j;
    if(len>=MAXSIZE){
        std::cout<<"overflow! "<<std::endl; //数据溢出
        return 0;
    }else if((i<1)||(i>len+1)){ //如果插入位置不合法
        std::cout <<"postition is not correct"<<std::endl;
        return  0;
    }else{
        for (int j = len; j <= i ; j--) {
            data[j]=data[j-1];
        }
        data[i-1]=x;
        len++;
        return 1;
    }

}

int SequenList::Deleted(int i) { //删除顺序表的第i个数据元素
    int j;
    if((i<1)||(i>len)){ //删除的位置不合法
        std::cout<<"position is not correct!"<<std::endl;
        return 0;
    }else{
        for (int j = i; j < len; j++) {
            data[j-1] = data[j]; //元素前移
        }
        len--; //表长度减1
        return 1;
    }
}

int SequenList::Location(DataType x) {
    //返回值为x的数据元素的位序值
    int j=0;
    while ((j<len)&&(data[j]!=x)) j++;
    if (j<len) return j+1;
    else return 0;
}

DataType SequenList::Get(int i) {
    if((i<1)||(i>len)){
        std::cout<<"position is not correct! "<<std::endl;
        return NULL;
    } else{
        return data[i-1];
    }
}

int SequenList::Length() {
    return len;
}

void main(){
    SequenList L;
    L.Initiate();
}
